﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace QuanLyBepAnTuThien
{
    public partial class frmThemChiTietUngHo : Form
    {
        public frmThemChiTietUngHo()
        {
            InitializeComponent();
        }
        connect cn = new connect();
        public void loaddata()
        {
            cobHoTenMTQ.DataSource = cn.getDataTable("tblMTQ_DS");
            cobHoTenMTQ.DisplayMember = "HoTen";
            cobHoTenMTQ.ValueMember = "MaMTQ";

            cobHienVat.DataSource = cn.getDataTable("tblDungCu_NguyenLieu_DS");
            cobHienVat.DisplayMember = "TenDungCu";
            cobHienVat.ValueMember = "MaDungCu";

            cobNguoiNhan.DataSource = cn.getDataTable("tblNhanVien_DS");
            cobNguoiNhan.DisplayMember = "HoTen";
            cobNguoiNhan.ValueMember = "MaNV";
        }

        private void frmThemChiTietUngHo_Load(object sender, EventArgs e)
        {
            loaddata();
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            gridChiTietUngHo.AllowUserToAddRows = false;
            gridChiTietUngHo.Rows.Add(1);
            int indexRow = gridChiTietUngHo.Rows.Count - 1;
            gridChiTietUngHo["TenDungCu", indexRow].Value = cobHienVat.Text;
            gridChiTietUngHo["SoLuong", indexRow].Value = txtSoLuong.Text;
            gridChiTietUngHo["MaDungCu", indexRow].Value = cobHienVat.SelectedValue;          
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private bool kiemtrahotenmtq()
        {
            SqlCommand cmd = new SqlCommand("tblMTQ_KiemTraHoTen", cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("ten", SqlDbType.NVarChar)).Value = cobHoTenMTQ.Text;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count <= 0)
            {
                return false;
            }
            return true;
        }
        private bool kiemtrahotennv()
        {
            SqlCommand cmd = new SqlCommand("tblNhanVien_KiemTraTenNV", cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("tennv", SqlDbType.NVarChar)).Value = cobNguoiNhan.Text;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt.Rows.Count <= 0)
            {
                return false;
            }
            return true;
        }
        private bool kiemtradungcu()
        {
            SqlCommand cmd = new SqlCommand("tblDungCuNguyenLieu_KiemTraTen", cn.ketnoi());
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("ten", SqlDbType.NVarChar)).Value = cobHienVat.Text;
            object ob = cmd.ExecuteScalar();
            if (Convert.ToInt32(ob) <= 0)
            {
                return false;
            }
            return true;
        }
        private void btnLuuChiTiet_Click(object sender, EventArgs e)
        {
            if (kiemtrahotenmtq() == false)
            {
                MessageBox.Show("Nhân viên " + cobHoTenMTQ.Text + " chưa có trong danh sách nhân viên", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cobHoTenMTQ.Focus();
            }
            else if (kiemtradungcu() == false)
            {
                MessageBox.Show("Dụng cụ không có trong hệ thống!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cobHienVat.Focus();
            }
            else if (gridChiTietUngHo.Rows.Count <= 0)
            {
                MessageBox.Show("Không thể lưu phiếu chi\nBạn phải có ít nhất một mặt hàng trong phiếu", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cobHienVat.Focus();
            }
            else if (kiemtrahotennv() == false)
            {
                MessageBox.Show("Nhân viên " + cobNguoiNhan.Text + " chưa có trong danh sách nhân viên", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cobHoTenMTQ.Focus();
            }
            else if (gridChiTietUngHo.Rows.Count == 0)
            {
                MessageBox.Show("Chưa có chi tiết ủng hộ. Vui lòng thêm ít nhất 1 chi tiết ủng hộ", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                
                SqlCommand cmd = new SqlCommand("tblSoVang_Them", cn.ketnoi());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("mamtq", SqlDbType.Int)).Value = cobHoTenMTQ.SelectedValue;
                cmd.Parameters.Add(new SqlParameter("matv", SqlDbType.VarChar)).Value = cobNguoiNhan.SelectedValue;
                cmd.Parameters.Add(new SqlParameter("ngay", SqlDbType.DateTime)).Value = dtNgayUngHo.Value;
                cmd.Parameters.Add(new SqlParameter("sotien", SqlDbType.Int)).Value = 0;
               // SqlTransaction stran = null;                   
                   // stran = cn.ketnoi().BeginTransaction();
                   // cmd.Transaction = stran;
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                       // stran.Commit();

                        SqlCommand cmd_max = new SqlCommand("tblSoVang_STTMax", cn.ketnoi());
                        cmd_max.CommandType = CommandType.StoredProcedure;
                        object max = cmd_max.ExecuteScalar();
                        //MessageBox.Show(Convert.ToInt32(max).ToString());
                        int i;
                        for (i = 0; i < gridChiTietUngHo.Rows.Count; i++)
                        {
                            int madungcu = int.Parse(gridChiTietUngHo.Rows[i].Cells["MaDungCu"].Value.ToString());
                            double soluong = double.Parse(gridChiTietUngHo.Rows[i].Cells["SoLuong"].Value.ToString());
                            SqlCommand cmd_insert = new SqlCommand("tblUngHo_Them", cn.ketnoi());
                            cmd_insert.CommandType = CommandType.StoredProcedure;
                            //cmd_insert.Transaction = stran;
                            cmd_insert.Parameters.Add(new SqlParameter("stt", SqlDbType.Int)).Value = Convert.ToInt32(max);
                            cmd_insert.Parameters.Add(new SqlParameter("dungcu", SqlDbType.Int)).Value = madungcu;
                            cmd_insert.Parameters.Add(new SqlParameter("soluong", SqlDbType.Int)).Value = soluong;
                            cmd_insert.ExecuteNonQuery();
                            //stran.Commit();

                        }
                        MessageBox.Show("Lưu chi tiết ủng hộ thành công!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                    }
               // }
               // catch(Exception b)
              //  {
                //    MessageBox.Show("Đã xảy ra lỗi trong quá trình thêm chi tiết ủng hộ, vui lòng kiểm tra lại","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
               //     MessageBox.Show(b.Message);
               //     stran.Rollback();
               // }
                }
        }       

        private void btnThemMTQ_Click(object sender, EventArgs e)
        {
            frmThemMTQ _frmThemMTQ = new frmThemMTQ();
            _frmThemMTQ.ShowDialog();
            loaddata();
        }

        private void btnThemDungCu_Click(object sender, EventArgs e)
        {
            frmThemDungCu _frmthemdungcu = new frmThemDungCu();
            _frmthemdungcu.ShowDialog();
            loaddata();
        }
    }
}
